.TH PROFIL 2 
.SH NAME
profil \- execution time profile
.SH SYNOPSIS
.B profil(buff, bufsiz, offset, scale)
.br
.B char *buff;
.br
.B int bufsiz, offset, scale;
.SH DESCRIPTION
.I Buff
points to an area of core whose length (in bytes) is given by
.IR bufsiz .
After this call, the user's program counter (pc)
is examined each clock tick (60th second);
.I offset
is subtracted from it, and the result multiplied by
.IR scale .
If the resulting number corresponds to a word
inside
.I buff,
that word is incremented.
.PP
The scale is interpreted as an unsigned,
fixed-point fraction with binary point at the
left: 0177777(8) gives a 1-1 mapping of pc's to words
in
.I buff;
077777(8) maps each pair of instruction words
together.
02(8) maps all instructions onto the beginning of
.I buff
(producing a non-interrupting core clock).
.PP
Profiling is turned off by giving a
.I scale
of 0 or 1.
It is rendered
ineffective by giving a
.I bufsiz
of 0.
Profiling is turned off when an
.I exec
is executed, but remains on in child and parent both
after a
.IR fork .
Profiling may be turned off if an update in
.I buff
would cause a memory fault.
.SH "SEE ALSO"
monitor(3), prof(1)
.SH ASSEMBLER
(profil = 44.)
.br
.B sys profil; buff; bufsiz; offset; scale
